/**
 * @file adrc.h
 * @brief 
 * 
 * @author 1024Tech (店铺链接：https://1024tech.taobao.com/)
 * @version 1.0
 * @date 2023-06-08
 * 
 * @copyright Copyright (c) 2023  Open Robot Tech.co, Ltd
 * 
 * @par 修改日志:
 * <table>
 * <tr><th>Date       <th>Version <th>Author  <th>Description
 * <tr><td>2023-05-08 <td>1.0     <td>Mr.lin     <td>Release
 * </table>
 */

#ifndef _ADRC_H_
#define _ADRC_H_

typedef struct ADRC
{
	/* v1为目标值（expect）的过渡过程 */
	/* v2为v1的倒数 */
	float v1,v2;
	
	float r;	/* 快速跟踪因子，与跟踪速度成正相关 */
	float h;	/* 滤波因子，系统调用步长（adrc控制周期：单位：秒） */	
	
	/* z1：跟踪反馈值 */
	/* z2：跟踪反馈的微分 */
	/* z3：跟踪系统的扰动 */
	float z1,z2,z3;		
	
	/* 扩张观测器带宽参数：决定了观测器的跟踪速度，w0值越大，观测器精度估计越高，抗干扰能力越强，瞬间响应速度加快 */
	/* 但是w0过大，会引入高频噪声，系统不稳定。w0参数应考虑估计性能和噪声容许量 */
	float w0;	
	
	/* 控制器带宽参数：决定了控制器的响应速度，wc越大，系统响应速度越快 */
	/* 但是wc过大会导致系统超调甚至不稳定。过大会引入更多噪声，所以满足控制性能时，应该选择较小的wc */
	float wc;
	
	/* 系统参数：扰动补偿，表示控制对象的特性，可以由阶跃对象的初始加速度导出，b0越大，抗干扰能力越弱，为了使系统保持稳定，b0合适就好 */
	float b0;
	
	float u;
} LADRC_CTRL;

#endif  /* _ADRC_H_ */
